﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using QuanCafe.QuanCafe_BUS_WebService;

namespace QuanCafe
{
    public partial class frmDangNhap : Form
    {


        // tạo 1 biến để gọi form Dang Ki
        frmDangKi _frmDangKi = new frmDangKi();

        // tạo 1 biến để lấy phương thức từ webservice
        QuanCafe_BUS_WebServiceSoapClient ws = new QuanCafe_BUS_WebServiceSoapClient();


        // viết delegate truyền dữ liệu qua FrmTrangChu
        public delegate void SendInfo2FrmTrangChu(string manhanvien, string matkhau);
        // tạo sự kiện 
        public SendInfo2FrmTrangChu Send2TrangChu;


        // tạo delegate nhận thông tin đăng nhập từ frmDangKi
        public void NhanTaiKhoanFromFrmDangKi(string manhanvien, string tennhanvien, string matkhau, bool flag)
        {
            // kiểm tra xem chuỗi nhận được có rỗng ko
            if (flag == false) // => frmDangKi chọn hủy bỏ 
            {
                // không làm gì hết
            }
            else
            {
                uscDangNhap.Manhanvien = manhanvien;
                uscDangNhap.Matkhau = matkhau;
            }
          
        }




        public frmDangNhap()
        {
            InitializeComponent();

            // khởi tạo các sự kiện cho uscDangNhap
            // => sự kiện click vào Đăng Kí
            uscDangNhap.dangNhap_2DangKi += new ucDangNhap.DangNhap_2DangKiHandle(ChonLinkDangKi_Click);
            // sự kiện đồng ý đăng nhập
            uscDangNhap.dangNhap_DongY += new ucDangNhap.DangNhap_DongYHandle(DongYDangNhap_Click);
            // sự kiện hủy bỏ đăng nhập
            uscDangNhap.dangNhap_huyBo += new ucDangNhap.DangNhap_HuyBoHandle(HuyBoDangNhap_Click);


        }

        private void frmDangNhap_Load(object sender, EventArgs e)
        {
            
        }


        #region viết các hàm cho các sự kiện của uscDangNhap

        void ChonLinkDangKi_Click()
        {
            // gọi hàm lấy dữ liệu từ _frmDangKi qua frmDangNhap
            _frmDangKi.GuiThongTin = new frmDangKi.GuiTaiKhoan2frmDangNhap(NhanTaiKhoanFromFrmDangKi);
            // show form lên
            _frmDangKi.ShowDialog();
           
        }

        void DongYDangNhap_Click()
        {
            try
            {
                // đầu tiên, kiểm tra dữ liệu nhập vào có đúng chưa
                if (uscDangNhap.Manhanvien.Length == 0) // chưa nhập gì cả
                {
                    // xuất ra thông báo
                    MessageBox.Show("Bạn chưa nhập vào mã nhân viên!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                else
                {
                    if (uscDangNhap.Matkhau.Length == 0) // chưa nhập mật khẩu
                    {
                        MessageBox.Show("bạn chưa nhập vào mật khẩu!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    else
                    { 
                        // gọi việc kiểm tra tài khoản ở CSDL từ webservice
                        bool flag = ws.NV_ChuaTonTaiNhanVien(uscDangNhap.Manhanvien, uscDangNhap.Matkhau);
                        if (flag == false) // đã có -> đăng nhập hợp lệ
                        {
                            this.Send2TrangChu(uscDangNhap.Manhanvien, uscDangNhap.Matkhau);
                            // đóng form lại
                            this.Close();  
                        }
                        else
                        { 
                            // xuất thông báo
                            MessageBox.Show("mã nhân viên hoặc mật khẩu không chính xác!","Error!",MessageBoxButtons.OK,MessageBoxIcon.Error);
                        } 
                    }
                }
            }
            catch (Exception e)
            { 
                // quăng lỗi
                MessageBox.Show("Lỗi: " + e);
            }
        }

        void HuyBoDangNhap_Click()
        {
            this.Close();
        }

        #endregion


        #region Các hàm liên quan đến thread

        // hàm gọi form Trang Chu
        void GoiFrmTrangChu()
        {
            frmTrangChu _frmTrangChu = new frmTrangChu();
            SendInfo2FrmTrangChu sendInfo = new SendInfo2FrmTrangChu(_frmTrangChu.NhanThongTinFromFrmDangNhap);
            sendInfo(uscDangNhap.Manhanvien, uscDangNhap.Matkhau);
            Application.Run(_frmTrangChu);
            // sau đó, đóng form này lại
            this.Close();
        }

        #endregion



    }
}
